package com.iplant.wms.service.po.wms;


import com.fasterxml.jackson.annotation.JsonProperty;
import com.iplant.base.po.BasePO;
import com.iplant.base.po.enums.DBSchemas;
import com.iplant.base.utils.annotation.po.DBBasePO;
import com.iplant.base.utils.annotation.condition.DBCondition;
import com.iplant.base.utils.annotation.field.DBField;
import com.iplant.base.utils.annotation.join.DBJoin;
import com.iplant.base.utils.general.CalendarTool;

import java.io.Serializable;
import java.util.Calendar;

/**
 * 批次库存记录
 *
 * @author ShrisJava
 */
@DBBasePO(TableName = "wms_stockrecord", Name = false, CheckName = {
        "Code", "StoreStationID,MaterialID,BatchRecordID"},
        Schemas = DBSchemas.WMS,CodeAuto = true, CodePrefix = "KCR{yyMMdd}", CodeNum = 5)
public class WMSStockRecord extends BasePO implements Serializable {
    private static final long serialVersionUID = 1L;

    @DBCondition
    @DBField(Update = false)
    public int FactoryID = 0;

    @DBJoin(name = "Code", tableName = "fmc_factory", tableAsName = "f1",
            Schemas = DBSchemas.Basic, MainTableField = "FactoryID")
    public String FactoryCode = "";

    @DBJoin(name = "Name", tableName = "fmc_factory", tableAsName = "f1",
            Schemas = DBSchemas.Basic, MainTableField = "FactoryID")
    public String FactoryName = "";

    @DBCondition
    @DBField(CheckValue = true)
    public int StoreID = 0;

    @DBJoin(name = "Name", tableName = "wms_store", tableAsName = "s4",
            JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreID")
    public String StoreName = "";
    @DBJoin(name = "Code", tableName = "wms_store", tableAsName = "s4",
            JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreID")
    public String StoreCode = "";

    @DBCondition
    @DBField(CheckValue = true)
    public int StoreRegionID = 0;

    @DBJoin(name = "Name", tableName = "wms_store_region", tableAsName = "s3",
            JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreRegionID")

    public String StoreRegionName = "";
    @DBJoin(name = "Code", tableName = "wms_store_region", tableAsName = "s3",
            JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreRegionID")
    public String StoreRegionCode = "";

    @DBCondition
    @DBField(CheckValue = true)
    public int StoreAreaID = 0;
    @DBJoin(name = "Name", tableName = "wms_store_area", tableAsName = "s2",
            JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreAreaID")
    public String StoreAreaName = "";
    @DBJoin(name = "Code", tableName = "wms_store_area", tableAsName = "s2",
            JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreAreaID")
    public String StoreAreaCode = "";

    @DBCondition
    @DBField
    public int StoreShelfID = 0;

    @DBJoin(name = "Name", tableName = "wms_store_shelf", tableAsName = "ss1",
            Schemas = DBSchemas.WMS, MainTableField = "StoreShelfID")

    public String StoreShelfName = "";
    @DBJoin(name = "Code", tableName = "wms_store_shelf", tableAsName = "ss1",
            Schemas = DBSchemas.WMS, MainTableField = "StoreShelfID")
    public String StoreShelfCode = "";



    @DBCondition
    @DBField(CheckValue = true)
    public int StoreStationID = 0;

    @DBJoin(name = "Name", tableName = "wms_store_station", tableAsName = "s1", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreStationID")
    public String StoreStationName = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like, ParamName2 = "StoreStationCodeEQ")
    @DBJoin(name = "Code", tableName = "wms_store_station", tableAsName = "s1", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.WMS, MainTableField = "StoreStationID")
    public String StoreStationCode = "";


    @DBCondition
    @DBJoin(name = "MaterialGroupID", tableName = "mss_material", tableAsName = "m2", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "MaterialID")
    public int MaterialGroupID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "mss_materialgroup", tableAsName = "m1",
            JoinIndex = 3, JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, ConditionalJoin = "m2.MaterialGroupID=m1.ID")
    public String MaterialGroupCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "mss_materialgroup", tableAsName = "m1",
            JoinIndex = 3,JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, ConditionalJoin = "m2.MaterialGroupID=m1.ID")
    public String MaterialGroupName = "";


    @DBCondition(CompareType = DBCondition.DBCompareType.leftLike)
    @DBJoin(name = "FullGroupName", tableName = "mss_materialgroup", tableAsName = "m1",
            JoinIndex = 3, JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, ConditionalJoin = "m2.MaterialGroupID=m1.ID")
    public String MaterialFullGroup = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.in)
    @DBField(CheckValue = true)
    public int MaterialID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "mss_material", tableAsName = "m2", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "MaterialID")
    public String MaterialCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "mss_material", tableAsName = "m2", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "MaterialID")
    public String MaterialName = "";

    /**
     * 入库数量
     */
    @DBField
    public double MaterialNum = 0.0;


    /**
     * 剩余数量
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.lt)
    @DBField
    public double MaterialMarginNum = 0.0;

    /**
     * 剩余数量
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.lt)
    @DBField
    public double MaterialFreezeNum = 0.0;


    @DBField(CheckValue = true)
    public int UnitID = 0;
    @DBJoin(name = "Code", tableName = "mss_unit", tableAsName = "un1", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "UnitID")
    public String UnitCode = "";
    @DBJoin(name = "Name", tableName = "mss_unit", tableAsName = "un1", JoinMode = DBJoin.DBJoinMode.Inner,
            Schemas = DBSchemas.Basic, MainTableField = "UnitID")
    public String UnitText = "";

    /**
     * 货主 就是客户
     */
    @DBCondition
    @DBField
    public int CustomerID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "crm_customer", tableAsName = "c1",
            Schemas = DBSchemas.Basic, MainTableField = "CustomerID")
    public String CustomerCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "crm_customer", tableAsName = "c1",
            Schemas = DBSchemas.Basic, MainTableField = "CustomerID")
    public String CustomerName = "";

    /**
     * 供应商
     */
    @DBCondition
    @DBField
    public int SupplierID = 0;
    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "crm_customer", tableAsName = "c2",
            Schemas = DBSchemas.Basic, MainTableField = "SupplierID")
    public String SupplierCode = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "crm_customer", tableAsName = "c2",
            Schemas = DBSchemas.Basic, MainTableField = "SupplierID")
    public String SupplierName = "";

    /**
     * 库存状态
     */
    @DBCondition
    @DBField
    public int StockStatus = 0;
    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "wms_stock_status", tableAsName = "st2", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "StockTypeID")
    public String StockStatusName = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "wms_stock_status", tableAsName = "st2", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "StockStatus")
    public String StockStatusCode = "";

    /**
     * 库存种类
     */
    @DBCondition
    @DBField
    public int StockTypeID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Name", tableName = "wms_stock_type", tableAsName = "st1", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "StockTypeID")
    public String StockTypeName = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "Code", tableName = "wms_stock_type", tableAsName = "st1", JoinMode = DBJoin.DBJoinMode.Left,
            Schemas = DBSchemas.WMS, MainTableField = "StockTypeID")
    public String StockTypeCode = "";

    /**
     * 入库可指定项目号 指定了项目号的不可以被冻结
     */
    @DBCondition
    @DBField
    public String ProjectNo = "";


    /**
     * 总体体积
     */
    @DBField
    public double TotalVolume = 0;
    @DBField
    public double TotalGrossWeight = 0;
    @DBField
    public double TotalNetWeight = 0;
    @DBField
    public double TotalPrice = 0.0;



    /**
     * 批次属性记录ID  同物料同一批收货的批次属性相同
     */
    @DBCondition
    @DBField
    public int BatchRecordID = 0;

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "RuleCode", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String BatchRuleCode = "";


    @DBCondition
    @DBField
    public String BatchRecordCode = "";


    /**
     * 批次属性01 生产日期
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "ProductDateStart",
            ParamName2 = "ProductDateStartEnd")
    @DBJoin(name = "ProductDate", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public Calendar ProductDate = CalendarTool.getBasicDate();

    /**
     * 批次属性02 失效日期
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "ExpireDateStart",
            ParamName2 = "ExpireDateEnd")
    @DBJoin(name = "ExpireDate", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public Calendar ExpireDate = CalendarTool.getBasicDate();


    /**
     * 批次属性03 入库日期  收货即入库  上架并不改变入库日期
     */
    @DBCondition(CompareType = DBCondition.DBCompareType.geLe, ParamName = "StockDateStart",
            ParamName2 = "StockDateEnd")
    @DBJoin(name = "StockDate", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public Calendar StockDate = CalendarTool.getBasicDate();

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr04", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")

    public String LotAttr04 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr05", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr05 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr06", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr06 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr07", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr07 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr08", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr08 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr09", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr09 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr10", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr10 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr11", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr11 = "";

    @DBCondition(CompareType = DBCondition.DBCompareType.like)
    @DBJoin(name = "LotAttr12", tableName = "mss_batchrecord", Schemas = DBSchemas.WMS,
            tableAsName = "br1", MainTableField = "BatchRecordID")
    public String LotAttr12 = "";



    public WMSStockRecord(){}

    public WMSStockRecord(WMSStockOperateRecord wStockOperateRecord){
        this.StoreID = wStockOperateRecord.StoreID;
        this.StoreName = wStockOperateRecord.StoreName;
        this.StoreCode = wStockOperateRecord.StoreCode;
        this.StoreRegionID = wStockOperateRecord.StoreRegionID;
        this.StoreRegionName = wStockOperateRecord.StoreRegionName;
        this.StoreRegionCode = wStockOperateRecord.StoreRegionCode;
        this.StoreShelfID = wStockOperateRecord.StoreShelfID;
        this.StoreShelfName = wStockOperateRecord.StoreShelfName;
        this.StoreShelfCode = wStockOperateRecord.StoreShelfCode;
        this.StoreAreaID = wStockOperateRecord.StoreAreaID;
        this.StoreAreaName = wStockOperateRecord.StoreAreaName;
        this.StoreAreaCode = wStockOperateRecord.StoreAreaCode;
        this.StoreStationID = wStockOperateRecord.StoreStationID;
        this.StoreStationName = wStockOperateRecord.StoreStationName;
        this.StoreStationCode = wStockOperateRecord.StoreStationCode;
        this.FactoryID = wStockOperateRecord.FactoryID;
        this.FactoryCode = wStockOperateRecord.FactoryCode;
        this.FactoryName = wStockOperateRecord.FactoryName;
        this.MaterialGroupID = wStockOperateRecord.MaterialGroupID;
        this.MaterialGroupCode = wStockOperateRecord.MaterialGroupCode;
        this.MaterialGroupName = wStockOperateRecord.MaterialGroupName;
        this.MaterialFullGroup = wStockOperateRecord.MaterialFullGroup;
        this.MaterialCode = wStockOperateRecord.MaterialCode;
        this.MaterialName = wStockOperateRecord.MaterialName;
        this.MaterialID = wStockOperateRecord.MaterialID;
        this.UnitID=wStockOperateRecord.UnitID;
        this.UnitCode=wStockOperateRecord.UnitCode;
        this.UnitText=wStockOperateRecord.UnitText;
        this.CustomerID=wStockOperateRecord.CustomerID;
        this.CustomerCode=wStockOperateRecord.CustomerCode;
        this.CustomerName=wStockOperateRecord.CustomerName;
        this.SupplierID=wStockOperateRecord.SupplierID;
        this.SupplierCode=wStockOperateRecord.SupplierCode;
        this.SupplierName=wStockOperateRecord.SupplierName;
        this.StockTypeID=wStockOperateRecord.StockTypeID;
        this.StockTypeName=wStockOperateRecord.StockTypeName;
        this.StockTypeCode=wStockOperateRecord.StockTypeCode;
        this.ProjectNo=wStockOperateRecord.ProjectNo;

        this.BatchRuleCode=wStockOperateRecord.BatchRuleCode;
        this.BatchRecordID=wStockOperateRecord.BatchRecordID;
        this.BatchRecordCode=wStockOperateRecord.BatchRecordCode;
        this.MaterialNum=wStockOperateRecord.MaterialNum;
        /**
         * 库存状态 涉及到自动变更 后续可能考虑引用枚举
         */
        this.StockStatus=wStockOperateRecord.Active;
        this.Description = wStockOperateRecord.Description;

    }


    @JsonProperty("FactoryID")
    public int getFactoryID() {
        return FactoryID;
    }

    public void setFactoryID(int factoryID) {
        FactoryID = factoryID;
    }

    @JsonProperty("FactoryCode")
    public String getFactoryCode() {
        return FactoryCode;
    }

    public void setFactoryCode(String factoryCode) {
        FactoryCode = factoryCode;
    }

    @JsonProperty("FactoryName")
    public String getFactoryName() {
        return FactoryName;
    }

    public void setFactoryName(String factoryName) {
        FactoryName = factoryName;
    }

    @JsonProperty("StoreID")
    public int getStoreID() {
        return StoreID;
    }

    public void setStoreID(int storeID) {
        StoreID = storeID;
    }

    @JsonProperty("StoreCode")
    public String getStoreCode() {
        return StoreCode;
    }

    public void setStoreCode(String storeCode) {
        StoreCode = storeCode;
    }

    @JsonProperty("StoreName")
    public String getStoreName() {
        return StoreName;
    }

    public void setStoreName(String storeName) {
        StoreName = storeName;
    }

    @JsonProperty("StoreAreaID")
    public int getStoreAreaID() {
        return StoreAreaID;
    }

    public void setStoreAreaID(int storeAreaID) {
        StoreAreaID = storeAreaID;
    }

    @JsonProperty("StoreAreaCode")
    public String getStoreAreaCode() {
        return StoreAreaCode;
    }

    public void setStoreAreaCode(String storeAreaCode) {
        StoreAreaCode = storeAreaCode;
    }

    @JsonProperty("StoreAreaName")
    public String getStoreAreaName() {
        return StoreAreaName;
    }

    public void setStoreAreaName(String storeAreaName) {
        StoreAreaName = storeAreaName;
    }

    @JsonProperty("StoreStationID")
    public int getStoreStationID() {
        return StoreStationID;
    }

    public void setStoreStationID(int storeStationID) {
        StoreStationID = storeStationID;
    }

    @JsonProperty("StoreStationCode")
    public String getStoreStationCode() {
        return StoreStationCode;
    }

    public void setStoreStationCode(String storeStationCode) {
        StoreStationCode = storeStationCode;
    }

    @JsonProperty("StoreStationName")
    public String getStoreStationName() {
        return StoreStationName;
    }

    public void setStoreStationName(String storeStationName) {
        StoreStationName = storeStationName;
    }

    @JsonProperty("MaterialID")
    public int getMaterialID() {
        return MaterialID;
    }

    public void setMaterialID(int materialID) {
        MaterialID = materialID;
    }

    @JsonProperty("MaterialCode")
    public String getMaterialCode() {
        return MaterialCode;
    }

    public void setMaterialCode(String materialCode) {
        MaterialCode = materialCode;
    }

    @JsonProperty("MaterialName")
    public String getMaterialName() {
        return MaterialName;
    }

    public void setMaterialName(String materialName) {
        MaterialName = materialName;
    }

    @JsonProperty("MaterialNum")
    public double getMaterialNum() {
        return MaterialNum;
    }

    public void setMaterialNum(double materialNum) {
        MaterialNum = materialNum;
    }

    @JsonProperty("UnitID")
    public int getUnitID() {
        return UnitID;
    }

    public void setUnitID(int unitID) {
        UnitID = unitID;
    }

    @JsonProperty("UnitCode")
    public String getUnitCode() {
        return UnitCode;
    }

    public void setUnitCode(String unitCode) {
        UnitCode = unitCode;
    }

    @JsonProperty("UnitText")
    public String getUnitText() {
        return UnitText;
    }

    public void setUnitText(String unitText) {
        UnitText = unitText;
    }

    @JsonProperty("CustomerID")
    public int getCustomerID() {
        return CustomerID;
    }

    public void setCustomerID(int customerID) {
        CustomerID = customerID;
    }

    @JsonProperty("CustomerCode")
    public String getCustomerCode() {
        return CustomerCode;
    }

    public void setCustomerCode(String customerCode) {
        CustomerCode = customerCode;
    }

    @JsonProperty("CustomerName")
    public String getCustomerName() {
        return CustomerName;
    }

    public void setCustomerName(String customerName) {
        CustomerName = customerName;
    }

    @JsonProperty("StockStatus")
    public int getStockStatus() {
        return StockStatus;
    }

    public void setStockStatus(int stockStatus) {
        StockStatus = stockStatus;
    }

    @JsonProperty("StockStatusName")
    public String getStockStatusName() {
        return StockStatusName;
    }

    public void setStockStatusName(String stockStatusName) {
        StockStatusName = stockStatusName;
    }

    @JsonProperty("StockStatusCode")
    public String getStockStatusCode() {
        return StockStatusCode;
    }

    public void setStockStatusCode(String stockStatusCode) {
        StockStatusCode = stockStatusCode;
    }

    @JsonProperty("StockTypeID")
    public int getStockTypeID() {
        return StockTypeID;
    }

    public void setStockTypeID(int stockTypeID) {
        StockTypeID = stockTypeID;
    }

    @JsonProperty("StockTypeName")
    public String getStockTypeName() {
        return StockTypeName;
    }

    public void setStockTypeName(String stockTypeName) {
        StockTypeName = stockTypeName;
    }

    @JsonProperty("StockTypeCode")
    public String getStockTypeCode() {
        return StockTypeCode;
    }

    public void setStockTypeCode(String stockTypeCode) {
        StockTypeCode = stockTypeCode;
    }

    @JsonProperty("ProjectNo")
    public String getProjectNo() {
        return ProjectNo;
    }

    public void setProjectNo(String projectNo) {
        ProjectNo = projectNo;
    }

    @JsonProperty("TotalVolume")
    public double getTotalVolume() {
        return TotalVolume;
    }

    public void setTotalVolume(double totalVolume) {
        TotalVolume = totalVolume;
    }

    @JsonProperty("TotalGrossWeight")
    public double getTotalGrossWeight() {
        return TotalGrossWeight;
    }

    public void setTotalGrossWeight(int totalGrossWeight) {
        TotalGrossWeight = totalGrossWeight;
    }

    @JsonProperty("TotalNetWeight")
    public double getTotalNetWeight() {
        return TotalNetWeight;
    }

    public void setTotalNetWeight(double totalNetWeight) {
        TotalNetWeight = totalNetWeight;
    }

    @JsonProperty("TotalPrice")
    public double getTotalPrice() {
        return TotalPrice;
    }

    public void setTotalPrice(double totalPrice) {
        TotalPrice = totalPrice;
    }



    @JsonProperty("BatchRecordID")
    public int getBatchRecordID() {
        return BatchRecordID;
    }

    public void setBatchRecordID(int batchRecordID) {
        BatchRecordID = batchRecordID;
    }


    @JsonProperty("ProductDate")
    public Calendar getProductDate() {
        return ProductDate;
    }

    public void setProductDate(Calendar productDate) {
        ProductDate = productDate;
    }

    @JsonProperty("ExpireDate")
    public Calendar getExpireDate() {
        return ExpireDate;
    }

    public void setExpireDate(Calendar expireDate) {
        ExpireDate = expireDate;
    }

    @JsonProperty("StockDate")
    public Calendar getStockDate() {
        return StockDate;
    }

    public void setStockDate(Calendar stockDate) {
        StockDate = stockDate;
    }

    @JsonProperty("LotAttr04")
    public String getLotAttr04() {
        return LotAttr04;
    }

    public void setLotAttr04(String lotAttr04) {
        LotAttr04 = lotAttr04;
    }

    @JsonProperty("LotAttr05")
    public String getLotAttr05() {
        return LotAttr05;
    }

    public void setLotAttr05(String lotAttr05) {
        LotAttr05 = lotAttr05;
    }

    @JsonProperty("LotAttr06")
    public String getLotAttr06() {
        return LotAttr06;
    }

    public void setLotAttr06(String lotAttr06) {
        LotAttr06 = lotAttr06;
    }

    @JsonProperty("LotAttr07")
    public String getLotAttr07() {
        return LotAttr07;
    }

    public void setLotAttr07(String lotAttr07) {
        LotAttr07 = lotAttr07;
    }

    @JsonProperty("LotAttr08")
    public String getLotAttr08() {
        return LotAttr08;
    }

    public void setLotAttr08(String lotAttr08) {
        LotAttr08 = lotAttr08;
    }

    @JsonProperty("LotAttr09")
    public String getLotAttr09() {
        return LotAttr09;
    }

    public void setLotAttr09(String lotAttr09) {
        LotAttr09 = lotAttr09;
    }

    @JsonProperty("LotAttr10")
    public String getLotAttr10() {
        return LotAttr10;
    }

    public void setLotAttr10(String lotAttr10) {
        LotAttr10 = lotAttr10;
    }

    @JsonProperty("LotAttr11")
    public String getLotAttr11() {
        return LotAttr11;
    }

    public void setLotAttr11(String lotAttr11) {
        LotAttr11 = lotAttr11;
    }

    @JsonProperty("LotAttr12")
    public String getLotAttr12() {
        return LotAttr12;
    }

    public void setLotAttr12(String lotAttr12) {
        LotAttr12 = lotAttr12;
    }



    @JsonProperty("BatchRuleCode")
    public String getBatchRuleCode() {
        return BatchRuleCode;
    }

    public void setBatchRuleCode(String batchRuleCode) {
        BatchRuleCode = batchRuleCode;
    }

    @JsonProperty("SupplierID")
    public int getSupplierID() {
        return SupplierID;
    }

    public void setSupplierID(int supplierID) {
        SupplierID = supplierID;
    }

    @JsonProperty("SupplierCode")
    public String getSupplierCode() {
        return SupplierCode;
    }

    public void setSupplierCode(String supplierCode) {
        SupplierCode = supplierCode;
    }

    @JsonProperty("SupplierName")
    public String getSupplierName() {
        return SupplierName;
    }

    public void setSupplierName(String supplierName) {
        SupplierName = supplierName;
    }

    @JsonProperty("StoreRegionID")
    public int getStoreRegionID() {
        return StoreRegionID;
    }

    public void setStoreRegionID(int storeRegionID) {
        StoreRegionID = storeRegionID;
    }

    @JsonProperty("StoreRegionName")
    public String getStoreRegionName() {
        return StoreRegionName;
    }

    public void setStoreRegionName(String storeRegionName) {
        StoreRegionName = storeRegionName;
    }

    @JsonProperty("StoreRegionCode")
    public String getStoreRegionCode() {
        return StoreRegionCode;
    }

    public void setStoreRegionCode(String storeRegionCode) {
        StoreRegionCode = storeRegionCode;
    }

    @JsonProperty("StoreShelfID")
    public int getStoreShelfID() {
        return StoreShelfID;
    }

    public void setStoreShelfID(int storeShelfID) {
        StoreShelfID = storeShelfID;
    }

    @JsonProperty("StoreShelfName")
    public String getStoreShelfName() {
        return StoreShelfName;
    }

    public void setStoreShelfName(String storeShelfName) {
        StoreShelfName = storeShelfName;
    }

    @JsonProperty("StoreShelfCode")
    public String getStoreShelfCode() {
        return StoreShelfCode;
    }

    public void setStoreShelfCode(String storeShelfCode) {
        StoreShelfCode = storeShelfCode;
    }

    @JsonProperty("MaterialGroupID")
    public int getMaterialGroupID() {
        return MaterialGroupID;
    }

    public void setMaterialGroupID(int materialGroupID) {
        MaterialGroupID = materialGroupID;
    }

    @JsonProperty("MaterialGroupCode")
    public String getMaterialGroupCode() {
        return MaterialGroupCode;
    }

    public void setMaterialGroupCode(String materialGroupCode) {
        MaterialGroupCode = materialGroupCode;
    }

    @JsonProperty("MaterialGroupName")
    public String getMaterialGroupName() {
        return MaterialGroupName;
    }

    public void setMaterialGroupName(String materialGroupName) {
        MaterialGroupName = materialGroupName;
    }

    @JsonProperty("MaterialFullGroup")
    public String getMaterialFullGroup() {
        return MaterialFullGroup;
    }

    public void setMaterialFullGroup(String materialFullGroup) {
        MaterialFullGroup = materialFullGroup;
    }

    @JsonProperty("MaterialMarginNum")
    public double getMaterialMarginNum() {
        return MaterialMarginNum;
    }

    public void setMaterialMarginNum(double materialMarginNum) {
        MaterialMarginNum = materialMarginNum;
    }

    @JsonProperty("BatchRecordCode")
    public String getBatchRecordCode() {
        return BatchRecordCode;
    }

    public void setBatchRecordCode(String batchRecordCode) {
        BatchRecordCode = batchRecordCode;
    }
    @JsonProperty("MaterialFreezeNum")
    public double getMaterialFreezeNum() {
        return MaterialFreezeNum;
    }

    public void setMaterialFreezeNum(double materialFreezeNum) {
        MaterialFreezeNum = materialFreezeNum;
    }

}
